
class BinarySearch {

  public static void main(String[] a) {
    System.out.println(new BS().Start(20));
  }
}
// This class contains an array of integers and
// methods to initialize, print and search the array
// using Binary Search

class BS {

  int[] number;
  int size;

  // Invoke methods to initialize, print and search
  // for elements on the array
  public int Start(int sz) {
    int aux01;
    int aux02;
    aux01 = this.Init(sz);
    aux02 = this.Print();

    if (this.Search(8)) {
      System.out.println(1);
    } else {
      System.out.println(0);
    }
    if (this.Search(19)) {
      System.out.println(1);
    } else {
      System.out.println(0);
    }
    if (this.Search(20)) {
      System.out.println(1);
    } else {
      System.out.println(0);
    }
    if (this.Search(21)) {
      System.out.println(1);
    } else {
      System.out.println(0);
    }
    if (this.Search(37)) {
      System.out.println(1);
    } else {
      System.out.println(0);
    }
    if (this.Search(38)) {
      System.out.println(1);
    } else {
      System.out.println(0);
    }
    if (this.Search(39)) {
      System.out.println(1);
    } else {
      System.out.println(0);
    }
    if (this.Search(50)) {
      System.out.println(1);
    } else {
      System.out.println(0);
    }

    return 999;
  }

  // Search for a specific value (num) using
  // binary search
  public boolean Search(int num) {
    boolean bs01;
    int right;
    int left;
    boolean var_cont;
    int medium;
    int aux01;
    int nt;

    aux01 = 0;
    bs01 = false;
    right = number.length;
    right = right - 1;
    left = 0;
    var_cont = true;
    while (var_cont) {
      medium = left + right;
      medium = this.Div(medium);
      aux01 = number[medium];
      if (num < aux01) {
        right = medium - 1;
      } else {
        left = medium + 1;
      }
      if (this.Compare(aux01, num)) {
        var_cont = false;
      } else {
        var_cont = true;
      }
      if (right < left) {
        var_cont = false;
      } else {
        nt = 0;
      }
    }

    if (this.Compare(aux01, num)) {
      bs01 = true;
    } else {
      bs01 = false;
    }
    return bs01;
  }

  // This method computes and returns the
  // integer division of a number (num) by 2
  public int Div(int num) {
    int count01;
    int count02;
    int aux03;

    count01 = 0;
    count02 = 0;
    aux03 = num - 1;
    while (count02 < aux03) {
      count01 = count01 + 1;
      count02 = count02 + 2;
    }
    return count01;
  }

  // This method compares two integers and
  // returns true if they are equal and false
  // otherwise
  public boolean Compare(int num1, int num2) {
    boolean retval;
    int aux02;

    retval = false;
    aux02 = num2 + 1;
    if (num1 < num2) {
      retval = false;
    } else if (!(num1 < aux02)) {
      retval = false;
    } else {
      retval = true;
    }
    return retval;
  }

  // Print the integer array
  public int Print() {
    int j;

    j = 1;
    while (j < (size)) {
      System.out.println(number[j]);
      j = j + 1;
    }
    System.out.println(99999);
    return 0;
  }

  // Initialize the integer array
  public int Init(int sz) {
    int j;
    int k;
    int aux02;
    int aux01;

    size = sz;
    number = new int[sz];

    j = 1;
    k = size + 1;
    while (j < (size)) {
      aux01 = 2 * j;
      aux02 = k - 3;
      number[j] = aux01 + aux02;
      j = j + 1;
      k = k - 1;
    }
    return 0;
  }
}
